pandas.read

您所在的位置:网站首页 python read csv 分隔符 pandas.read

pandas.read

2023-10-04 06:05| 来源: 网络整理| 查看: 265

看过来

《pandas 教程》 持续更新中,可作为 pandas 入门进阶课程、pandas 中文手册、用法大全,配有案例讲解和速查手册。提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。查看更新日志。作者开办 Python 数据分析培训,详情 Python 数据分析培训。

本教程作者所著新书《Python之光:Python编程入门与实战》(ISBN:9787111729891)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。 本教程作者所著新书《深入浅出Pandas:利用Python进行数据处理与分析》(ISBN:9787111685456)已由机械工业出版社出版上市,各大电商平台有售,欢迎:查看详情并关注购买。

pandas.read_csv() 接口用于读取 CSV 格式数据文件,由于它使用非常频繁,功能强大参数众多,所以在这里专门做详细介绍, 我们在使用过程中可以查阅。

读 Excel 文件等方法会有很多相同的参数,用法基本一致。

语法

它的语法如下:

pd.read_csv( filepath_or_buffer: 'FilePathOrBuffer', sep=, delimiter=None, header='infer', names=, index_col=None, usecols=None, squeeze=False, prefix=, mangle_dupe_cols=True, dtype: 'DtypeArg | None' = None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal: 'str' = '.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, encoding_errors: 'str | None' = 'strict', dialect=None, error_bad_lines=None, warn_bad_lines=None, on_bad_lines=None, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options: 'StorageOptions' = None, ) 参数 文件 filepath_or_buffer

这是一个默认参数据,没有参数名,不能为空。

可以传文件路径:

# filepath_or_bufferstr, path object or file-like object # 本地相对路径: pd.read_csv('data/data.csv') # 注意目录层级 pd.read_csv('data.csv') # 如果文件与代码文件在同目录下 pd.read_csv('data/my/my.data') # CSV 文件扩展名不一定是 csv # 本地绝对路径: pd.read_csv('/user/gairuo/data/data.csv') # 使用网址 url pd.read_csv('https://www.gairuo.com/file/data/dataset/GDP-China.csv') # Amazon S3, 安装支持库 fsspec pd.read_csv( "s3://ncei-wcsd-archive/data/processed/SH1305/18kHz/SaKe2013" "-D20130523-T080854_to_SaKe2013-D20130523-T085643.csv", storage_options={"anon": True}, )

需要注意的是,mac 和 windows 的路径写法不一样,上例是 mac 写法,windows 需要换成类似 data\data.csv 及 'E: \data\data.csv'

可以传数据字符串,即 csv 中的数据字符,以字符串直接传入

from io import StringIO data = ('col1,col2,col3\n' 'a,b,1\n' 'a,b,2\n' 'c,d,3') pd.read_csv(StringIO(data))

StringIO

from io import StringIO pd.read_csv(StringIO(data), dtype=object)

也可以传入字节数据:

from io import BytesIO data = (b'word,length\n' b'Tr\xc3\xa4umen,7\n' b'Gr\xc3\xbc\xc3\x9fe,5') pd.read_csv(BytesIO(data))

注:字节数据经常会放在缓冲中来传递。

buf = BytesIO() # buf 可认为一个存储位置来使用 buf.getbuffer()

也可以用 read() 打开的文件再传递,不过几乎没人这么做。

分隔符 sep

字符型,每行数据内容分隔符号,默认是 , 逗号,另外常见的还有 tab 符 \t,空格等,根据数据实际的情况传值。

# str, default ‘,’ # 数据分隔转化是逗号, 如果是其他可以指定 pd.read_csv(data, sep='\t') # 制表符分隔 tab pd.read_table(data) # read_table 默认是制表符分隔 tab pd.read_csv(data, sep='|') # 制表符分隔 tab pd.read_csv(data,sep="(?\r\n', quoting = csv.QUOTE_MINIMAL) pd.read_csv("gr.csv", encoding="gbk", dialect='mydialect') 坏行处理 error_bad_lines

默认情况下,字段太多的行(例如,带有太多逗号的csv行)会引发异常,并且不会返回任何DataFrame。 如果为False,则这些“坏行”将从返回的DataFrame中删除。 请参阅下面的坏行。

# boolean, default True pd.read_csv(StringIO(data), error_bad_lines=False) 坏行警告 warn_bad_lines

如果error_bad_lines为False,而warn_bad_lines为True,则将为每个“坏行”输出警告。

# boolean, default True pd.read_csv(StringIO(data), warn_bad_lines=False) 空格分隔符 delim_whitespace

指定是否将空格(例如''或'\ t')用作分隔符。 等效于设置sep ='\s+'。 如果此选项设置为True,则不应该为delimiter参数传递任何内容。

# boolean, default False pd.read_csv(StringIO(data), delim_whitespace=False) 低内存 low_memory

在内部对文件进行分块处理,从而在解析时减少了内存使用,但可能是混合类型推断。 要确保没有混合类型,请设置False或使用dtype参数指定类型。 请注意,无论使用chunksize还是iterator参数以块形式返回数据,整个文件都将被读取到单个DataFrame中。(仅对C解析器有效)

# boolean, default True pd.read_csv(StringIO(data), low_memory=False) 内存映射 memory_map

如果为filepath_or_buffer提供了文件路径,则将文件对象直接映射到内存中并直接从那里访问数据。 使用此选项可以提高性能,因为不再有任何I / O开销。

# boolean, default False pd.read_csv('gr.csv', low_memory=False) 高精度转换 float_precision

指定C引擎应使用哪个转换器进行浮点运算,对于普通转换器,选项为“None”或“high”,原始低精度转换器的“legacy”,以及 round-trip 换器的“ round_trip”。

# string, default None val = '0.3066101993807095471566981359501369297504425048828125' data = 'a,b,c\n1,2,{0}'.format(val) abs(pd.read_csv(StringIO(data), engine='c',float_precision='high')['c'][0] - float(val)) 存储选项 storage_options

注:pandas 1.2.0 新增。

fsspec 还允许使用复杂的URL,以访问压缩档案中的数据,文件的本地缓存等。 要在本地缓存上面的示例,可以增加参数配置:

# Amazon S3, 安装支持库 fsspec pd.read_csv( "simplecache::s3://ncei-wcsd-archive/data/processed/SH1305/18kHz/" "SaKe2013-D20130523-T080854_to_SaKe2013-D20130523-T085643.csv", storage_options={"s3": {"anon": True}}, )

在这里,我们指定“anon”参数用于实现的“ s3”部分,而不是用于缓存实现。 请注意,这仅在会话期间缓存到临时目录,但是您也可以指定永久存储。更多参数可参考fsspec文档

注:pandas 1.3.0 新增。

从fsspec未处理的远程URL(例如HTTP和HTTPS)读取时,传递到存储的字典将用于创建请求中包含的头()。这可用于控制用户代理标头(User-Agent header)或发送其他自定义标头。例如:

headers = {"User-Agent": "pandas"} df = pd.read_csv( "https://download.bls.gov/pub/time.series/cu/cu.item", sep="\t", storage_options=headers ) 返回

一般情况下,会将读取到的数据返回一个 DataFrame,当然按照参数的要求会返回指定的类型。

相关内容 pandas 读取数据组合为时间类型 2023-01-31 19:18:16 扩展窗口函数 expanding pandas 教程 pandas.read_excel >> axis 参数详解 pandas 函数详细介绍 pd.read_excel() >>


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3